﻿@{
    ViewBag.Title = "Grupos";
    Layout = "~/Views/Shared/n_Layout.cshtml";
}
<div id="listadoGrupos" style="background-color:#EAEFF5;">
    <table id="tablaGrupos">
    </table>
    <div id="barraGrupos">
    </div>
</div>
<div>
    <br />
    <br />
</div>
<div id="listadoDetalles" style="display: none;background-color:#EAEFF5;">
    <table id="tablaDetalles">
    </table>
    <div id="barraDetalles">
    </div>
    <br/>
<div><input type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="Guardar" id="btnGuardar" /></div>

</div>

<div id="ventaNuevo" style="display: none;background-color:#EAEFF5;">
    <table id="tablaNuevo">
    </table>
    <div id="barraNuevo">
    </div>
</div>

<div id='dialog-alert' style="display: none;background-color:#EAEFF5;">
</div>
<div id='dialog-confirm' style="display: none;background-color:#EAEFF5;">
¿Está seguro que desea guardar este item?
</div>
<div id='dialog-delete' style="display: none;background-color:#EAEFF5;">
    ¿Está seguro que desea eliminar este item?
</div>
@section HeaderContent{
}
@section ScriptContent{
}
@section JavaScript {
    <script type='text/javascript'>
        var idGrupo = 0;
        var nomGrupo = "";
        var accion = '';
        var listaDetalles = new Array();
        $().ready(function () {
            $("#listadoDetalles").hide();
            ListarGrupos();
            ListarNuevos();
            $('#dialog-alert').dialog({
                autoOpen: false,
                resizable: false,
                height: 'auto',
                width: 350,
                title: 'Alerta!',
                modal: true,
                open: function () {
                    $(this).parent().appendTo($('#aspnetForm'));
                },
                buttons: [{
                    text: "Aceptar",
                    click: function () {
                        $(this).dialog("close");
                    }
                }]
            });
            $("#dialog-confirm").dialog({
                autoOpen: false,
                resizable: false,
                height: 200,
                width: 280,
                title: 'Grupos',
                modal: true,
                buttons: [{
                    text: 'Aceptar',
                    click: function () {
                        Guardar();
                        $("#listadoDetalles").hide();
                    }
                }, {
                    text: 'Cancelar',
                    click: function () {
                        $(this).dialog("close");
                    }
                }]
            });

            $('#btnGuardar').bind("click", function (e) {
                $("#dialog-confirm").dialog('open');
                e.preventDefault();

            });

        });

        function Guardar() {
            $("#dialog-confirm").dialog('close');
            var entidades = new Array();
            for (var i = 0; i < listaDetalles.length; i++) {
                var entidad = new Object();
                entidad.nIdeDetElemento = listaDetalles[i].nIdeDetElemento + "";
                entidad.nIdeDetalle = listaDetalles[i].nIdeDetalle+"";
                entidad.Accion = listaDetalles[i].Accion;
                entidad.nIdeGrupo = listaDetalles[i].nIdeGrupo +"";
                entidad.vNomDetalle = listaDetalles[i].vNomDetalle;
                entidad.vNomGrupo = listaDetalles[i].vNomGrupo;
                entidad.dtFecReg = listaDetalles[i].dtFecReg;
                entidad.dtFecIniVig = listaDetalles[i].dtFecIniVig;
                entidades[i] = entidad;
            }
            
            var parameters = { entidades: entidades };
            var url = '@Url.Action("Guardar","CompendioDetalle")';
            var response = ORI.Ajax(url, parameters, false);
            if (response.Success) {
                jQuery("#tablaDetalles").trigger("reloadGrid");
            } else {
                ORI.ShowAlert('', "No se pudieron guardar los datos del Grupo.");
            }
        }
        
        function ListarGrupos() {
            var gwdth = $(window).width() - 260;
            colNames = ['nIdeDetalle', 'nIdeCompendio', 'Cod. Elemento', 'Nombre Detalle', 'Nombre Corto', 'idGrupo', 'Grupo', 'Fecha Reg', 'Fecha Inicio', 'Fecha Fin', 'nIdeUsuReg', 'Ref. 1', 'Ref. 2', 'Ref. 3'];
            colModels = [
            { name: 'nIdeDetalle', index: 'nIdeDetalle', width: 40, align: "left", key: true, hidden: true },
            { name: 'nIdeCompendio', index: 'nIdeCompendio', width: 40, align: "left", hidden: true },
            { name: 'vCodElemento', index: 'vCodElemento', align: 'left', width: 80, editable: false, searchoptions: { sopt: ['cn', 'bw']} },
            { name: 'vNomDetalle', index: 'vNomDetalle', align: 'left', width: 200, editable: false, searchoptions: { sopt: ['cn', 'bw']} },
            { name: 'vNomCorto', index: 'vNomCorto', align: 'left', width: 150, editable: false, searchoptions: { sopt: ['cn', 'bw']} },
            { name: 'nIndEleGrupo', index: 'nIndEleGrupo', align: 'left', width: 150, hidden: true, search: false },
            { name: 'grupo', index: 'grupo', align: 'left', width: 60, editable: true, search: false },
            { name: 'dtFecReg', index: 'dtFecReg', align: 'left', width: 100, editable: false, search: false },
            { name: 'dtFecIniVig', index: 'dtFecIniVig', align: 'left', width: 100, editable: false, search: false },
            { name: 'dtFecFinVig', index: 'dtFecFinVig', align: 'left', width: 100, editable: false, search: false },
            { name: 'nIdeUsuReg', index: 'nIdeUsuReg', align: 'left', width: 100, editable: false, hidden: true },
            { name: 'vDesRef1', index: 'vDesRef1', align: 'left', width: 150, hidden: true },
            { name: 'vDesRef2', index: 'vDesRef2', align: 'left', width: 150, hidden: true },
            { name: 'vDesRef3', index: 'vDesRef3', align: 'left', width: 150, hidden: true}];

            var opciones = { nuevo: false, editar: false, eliminar: false, search: false, rules: true,cambiarFila:true, sort: 'asc' };

            ORI.GrillaCompleta('tablaGrupos', 'barraGrupos', '300px', gwdth, 'Listado Identificadores de Grupo',
            '@Url.Action("ListarDetalleCompendio", "CompendioDetalle")', 'id', colNames, colModels, 'nIdeDetalle',
            opciones, null, null, null);
            $("#tablaGrupos").filterToolbar({ searchOnEnter: true, stringResult: true, defaultSearch: "cn" });
        }

        function cambiarFila(rowkey) {
            idGrupo = rowkey;
            nomGrupo = $('#tablaGrupo').jqGrid('getCell', rowkey, 'vNomDetalle');
            $('#tablaDetalles').jqGrid('GridUnload');
            $("#listadoDetalles").show();
            CrearGridDeGrupos();
            listaDetalles = new Array();
            ListarDetallesdeGrupo();
        }
        function AbrirVentanaNuevo(titulo) {
            jQuery("#tablaNuevo").jqGrid("GridUnload");
            ListarNuevos();
            var gwdth = $(window).width() - 220;
            var counter = 0;
            jQuery('#ventaNuevo').dialog({
                title: titulo,
                width: gwdth,
                modal: true,
                resizable: false,
                buttons: [
                        {
                            text: "Aceptar",
                            click: function () {
                                var found = 0;
                                var ids = jQuery("#tablaNuevo").jqGrid('getGridParam', 'selarrrow');
                                if (ids.length > 0) {
                                    $.each(ids, function (i, v) {
                                        var rowData = jQuery("#tablaNuevo").jqGrid('getRowData', ids[i]);
                                        var myData = {
                                            nIdeGrupo: 0,
                                            nIdeDetElemento: idGrupo,
                                            vNomGrupo: rowData.vNomCorto,
                                            nIdeDetalle: rowData.nIdeDetalle,
                                            vNomDetalle: rowData.vNomDetalle,
                                            dtFecIniVig: rowData.dtFecIniVig,
                                            dtFecFinVig: rowData.dtFecFinVig,
                                            dtFecReg: rowData.dtFecReg,
                                            Accion: 'Insert'
                                        };
                                        $("#tablaDetalles input:checkbox").each(function () {
                                            if (rowData.nIdeDetalle == $(this).parents("tr").find("td").eq(5).html())
                                            { found = 1; }
                                        });
                                        if (found == 0) {
                                            jQuery("#tablaDetalles").jqGrid('addRowData', rowData.nIdeDetalle, myData);
                                            listaDetalles.push(myData);
                                        }
                                        found = 0;
                                    });
                                }
                                else {

                                    ORI.ShowAlert('', "No seleccionó ningun item.");
                                }
                                jQuery(this).dialog('close');
                            }
                        },
                        {
                            text: "Cancelar",
                            click: function () {
                                $(this).dialog("close");
                            }
                        }
                    ]
            });
                }

                function ObtenerMax(array) {
                    var max = 0;
                    for (var i = 0; i < array.length; i++) {
                        if (array[i].IDSubEnsayo > 0) {
                            if (array[i].IDSubEnsayo >= max)
                                max = array[i].IDSubEnsayo;
                        } else {
                            if (array[i].ID >= max)
                                max = array[i].ID;
                        }
                    }
                    return max;
                }
                
        function ListarNuevos() {
            var gwdth = $(window).width() - 260;
            colNames = ['nIdeDetalle', 'nIdeCompendio', 'Cod. Elemento', 'Nombre Detalle', 'Nombre Corto', 'idGrupo', 'Grupo', 'Fecha Reg', 'Fecha Inicio', 'Fecha Fin', 'nIdeUsuReg', 'Ref. 1', 'Ref. 2', 'Ref. 3'];
            colModels = [
    { name: 'nIdeDetalle', index: 'nIdeDetalle', width: 40, align: "left", key: true, hidden: true },
    { name: 'nIdeCompendio', index: 'nIdeCompendio', width: 40, align: "left", hidden: true },
    { name: 'vCodElemento', index: 'vCodElemento', align: 'left', width: 80, editable: false, searchoptions: { sopt: ['cn', 'bw']} },
    { name: 'vNomDetalle', index: 'vNomDetalle', align: 'left', width: 200, editable: false, searchoptions: { sopt: ['cn', 'bw']} },
    { name: 'vNomCorto', index: 'vNomCorto', align: 'left', width: 150, editable: false, searchoptions: { sopt: ['cn', 'bw']} },
    { name: 'nIndEleGrupo', index: 'nIndEleGrupo', align: 'left', width: 150, hidden: true, search: false },
    { name: 'grupo', index: 'grupo', align: 'left', width: 60, editable: true, search: false },
    { name: 'dtFecReg', index: 'dtFecReg', align: 'left', width: 100, editable: false, search: false },
    { name: 'dtFecIniVig', index: 'dtFecIniVig', align: 'left', width: 100, editable: false, search: false },
    { name: 'dtFecFinVig', index: 'dtFecFinVig', align: 'left', width: 100, editable: false, search: false },
    { name: 'nIdeUsuReg', index: 'nIdeUsuReg', align: 'left', width: 100, editable: false, hidden: true },
    { name: 'vDesRef1', index: 'vDesRef1', align: 'left', width: 150, hidden: true },
    { name: 'vDesRef2', index: 'vDesRef2', align: 'left', width: 150, hidden: true },
    { name: 'vDesRef3', index: 'vDesRef3', align: 'left', width: 150, hidden: true}];

            var opciones = { nuevo: false, editar: false, eliminar: false, search: false, rules: true, multiselect: true, sort: 'asc' };

            ORI.GrillaCompleta('tablaNuevo', 'barraNuevo', 300, gwdth, 'Listado de Detalle',
    '@Url.Action("ListarDetalleCompendio", "CompendioDetalle")', 'id', colNames, colModels, 'nIdeDetalle',
    opciones, null, null, null);
            $("#tablaNuevo").filterToolbar({ searchOnEnter: true, stringResult: true, defaultSearch: "cn" });
        }
        
        function CrearGridDeGrupos() {
            $("#tablaDetalles").jqGrid({
                    datatype:'local',
                colNames: ['IDGrupo', 'nIdeDetElemento', 'Grupo', 'idDetalle', 'Nombre Detalle', 'Inicio Vigencia', 'Fin Vigencia','Fec. Registro','Accion' ],
                colModel: [
            { name: 'nIdeGrupo', index: 'nIdeGrupo', width: 40, align: "left",  hidden: true },
            { name: 'nIdeDetElemento', index: 'nIdeDetElemento', width: 40,  search: false, hidden: true },
            { name: 'vNomGrupo', index: 'vNomGrupo', width: 200, search:false },
            { name: 'nIdeDetalle', index: 'nIdeDetalle', width: 40, key: true, search: false, hidden: true },
            { name: 'vNomDetalle', index: 'vNomDetalle', width: 300, search:false },
            { name: 'dtFecIniVig', index: 'dtFecIniVig', width: 40, search:false ,hidden:true},
            { name: 'dtFecFinVig', index: 'dtFecFinVig', width: 40, search: false ,hidden:true},
            { name: 'dtFecReg', index: 'dtFecReg', width: 40, search: false,hidden:true },
            { name: 'Accion', index: 'Accion', width: 40, search: false,hidden:true }
        ],
                sortorder: "desc",
                rowNum: 15,
                rownumbers: true,
                cellsubmit: "clientArray",
                pager: "#barraDetalles",
                sortable: false,
                height: 'auto',
                width: '600px',
                viewrecords: true,
                multiselect: true,
                id: "id",
                caption: 'Detalles del Grupo'
            });
            jQuery("#tablaDetalles").jqGrid('navGrid', "#barraDetalles", { edit: false, add: false, del: false, search: false });

            $('#tablaDetalles').navButtonAdd('#barraDetalles', {
                caption: 'Agregar',
                title: 'Agregar',
                buttonicon: 'ui-icon ui-icon-plus',
                position: 'first',
                onClickButton: function () {
                    if (idGrupo != undefined && idGrupo != 0) {
                        AbrirVentanaNuevo('Agregar al Grupo');
                    }
                    else
                        ORI.ShowAlert('', "Seleccione un Grupo.");
                }
            });
            $('#tablaDetalles').navButtonAdd('#barraDetalles', {
                caption: 'Quitar',
                title: 'Quitar',
                buttonicon: 'ui-icon ui-icon-trash',
                position: 'third',
                onClickButton: function () {
                    var key = jQuery('#tablaDetalles').getGridParam('selrow');
                    if (key != null) {
                        jQuery('#dialog-delete').dialog({
                            title: "Eliminar",
                            width: 'auto',
                            modal: true,
                            resizable: false,
                            buttons: [
                                    {
                                        text: "Aceptar",
                                        click: function () {
                                            Eliminar();
                                        }
                                    },
                                    {
                                        text: "Cancelar",
                                        click: function () {
                                            $(this).dialog("close");
                                        }
                                    }
                                ]
                        });
                    }
                    else
                        ORI.ShowAlert('', 'Seleccione un item');
                }
            });
        }

        function ListarDetallesdeGrupo() {
            $("#tablaDetalles").jqGrid("clearGridData");
            var url = '@Url.Action("ListarbyGrupo", "CompendioDetalle")';
            var parametros = { idGrupo: idGrupo };
            var resultado = ORI.Ajax(url, parametros, false);
            if (resultado.Success) {
                $.each(resultado.Data, function (i, v) {
                    var myData = { nIdeGrupo: v.nIdeGrupo,
                        nIdeDetElemento: v.nIdeDetElemento,
                        vNomGrupo: v.vNomGrupo,
                        nIdeDetalle: v.nIdeDetalle,
                        vNomDetalle: v.vNomDetalle,
                        dtFecIniVig: v.dtFecIniVig,
                        dtFecFinVig: v.dtFecFinVig,
                        dtFecReg: v.dtFecReg, Accion: 'Update'
                    };
                    jQuery("#tablaDetalles").jqGrid('addRowData', i, myData);
                    listaDetalles.push(myData);
                });
                $("#tablaDetalles").trigger("reloadGrid");
            } else {
                alert(resultado.Message);
            }
        }
       
        
        function GetRules(grilla) {
            var rules = new Array();
            var id = 0;
            if (grilla == 'tablaGrupos') {
                id = 2;
                rules = [{ field: 'nIndEleGrupo', data: id, op: '='}];
            }
            return rules;
        }
        
        function Eliminar() {
            var ids = jQuery("#tablaDetalles").jqGrid('getGridParam', 'selarrrow');
            if (ids.length == 0)
                ORI.ShowAlert('', 'Seleccione un Item.');
            if(ids!=null) {
                while(ids.length!=0) {
                    EliminarDetalle(ids[ids.length - 1]);
                    $("#tablaDetalles").jqGrid('delRowData', ids[ids.length - 1]);
                }
            }
            jQuery("#tablaDetalles").trigger("reloadGrid");
        }

        function EliminarDetalle(rowKey) {
            $("#dialog-delete").dialog('close');
            $.each(listaDetalles, function (i, v) {
                var idD = $('#tablaDetalles').jqGrid('getCell', rowKey, 'nIdeDetalle');
                var a = jQuery('#tablaDetalles').jqGrid('getRowData', rowKey);
                if (v.nIdeDetalle == idD) {
                    v.Accion = 'Eliminar';
                }
            });
        }
    </script>
}
